package com.hzw.saas.api.old.storage;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hzw.saas.api.old.storage.bo.ResourceFileBO;
import com.hzw.saas.api.old.storage.bo.ResourceFolderBO;
import com.hzw.saas.common.config.util.PageParam;

/**
 * <p>
 * 资源群组分享关联表 服务类
 * </p>
 *
 * @author zzl
 * @since 2020-12-24
 */
public interface IGroupResourceService {

    /**
     * 获取资源信息，包含共享的群组信息
     *
     * @param fileId 资源ID
     * @return 资源信息
     */
    ResourceFileBO getGroupFile(String fileId);

    /**
     * 组装资源的共享群组信息
     *
     * @param fileInfo
     */
    ResourceFileBO assembleGroups(ResourceFileBO fileInfo);

    /**
     * 组装资源的共享群组信息
     *
     * @param folderInfo
     */
    ResourceFolderBO assembleGroups(ResourceFolderBO folderInfo);

    /**
     * 统计共享文件数量
     * 若groupId 和 ownerId同时为空，则返回0
     *
     * @param groupId 指定群组ID，可选
     * @param ownerId 指定文件所有者ID，可选
     * @return 满足条件的共享文件数量
     */
    int countGroupFile(String groupId, String ownerId);

    /**
     * 获取群组资源列表
     *
     * @param page    分页
     * @param groupId 群组ID
     * @param ownerId
     * @return 分页资源列表
     */
    IPage<ResourceFileBO> listGroupFileInfo(PageParam page, String groupId, String ownerId);

    /**
     * 检查分享是否存在
     *
     * @param groupId
     * @param fileId
     * @return
     */
    boolean existGroupFile(String groupId, String fileId);

    /**
     * 增加资源分享
     *
     * @param groupId
     * @param fileId
     */
    void addGroupFile(String groupId, String userId, String fileId);

    /**
     * 取消资源分享
     *
     * @param groupId 群组ID
     * @param fileId  资源ID
     */
    void deleteGroupFile(String groupId, String userId, String fileId);

    /**
     * 检查资是否属于用户或是否为用户所在某群组的分享
     *
     * @param fileId 资源ID
     * @param userId 用户ID
     * @return 检查结果 true/false
     */
    boolean checkAuthRead(String userId, String fileId);


}
